<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    //一.正则的分组
    //1.正则的分组--()符号实现, \1 \2...
    //正则表达式中括号表示分组的意义，第一个括号第一个分组，第二个括号表示第二个分支....
    //\1\2...表示对应的分组中的值。


    // 如何匹配中文 - [\u4e00-\u9fa5]
    // var str = 'abc你好def谢谢123对不起kkkk';
    // console.log(str.match(/[\u4e00-\u9fa5]/g)); //["你", "好", "谢", "谢", "对", "不", "起"]
    // console.log(str.match(/[\u4e00-\u9fa5]+/g)); //["你好", "谢谢", "对不起"]

    // var str = '希望大家好好学习，天天向上';
    // var reg = /([\u4e00-\u9fa5])\1/g;
    // console.log(str.match(reg)); //["好好", "天天"]

    // var str = '天上的星星是一闪一闪的，地上的人儿一动一动的';
    // var reg = /([\u4e00-\u9fa5])([\u4e00-\u9fa5])\1\2/g;
    // console.log(str.match(reg)); // ["一闪一闪", "一动一动"]

    // var str = '天上的星是亮晶晶，地上的人儿傻呼呼';
    // var reg = /[\u4e00-\u9fa5]([\u4e00-\u9fa5])\1/g;
    // console.log(str.match(reg)); //["亮晶晶", "傻呼呼"]

    // 2.RegExp.$1,RegExp.$2,RegExp.$3...通过正则类下面的静态属性来匹配分组的值
    // 使用上面的属性获取匹配值的时候，正则必须先执行一次
    // var str = 'hello,world';
    // var reg = /(\w+),(\w+)/;
    // reg.test(str); //正则必须先执行一次
    // console.log(RegExp.$1); //hello  获取第一个分组的值
    // console.log(RegExp.$2); //world  获取第二个分组的值

    // 二.转义字符：转义字符是字符的一种间接表示方式。在特殊语境中，无法直接使用字符自身。如果在一个正常字符前添加反斜杠,JavaScript 会忽略该反斜杠

    // 构造函数定义正则  -- \\
    // 字面量定义正则  --  \

    // console.log('h\ello');//如果在一个正常字符前添加反斜杠,JavaScript 会忽略该反斜杠
    // console.log('hello\nworld'); //\n换行，这里不会省略，在特殊语境中，无法直接使用字符自身

    // var reg = /^\a$/;//这里表示的就是a， 会忽略该反斜杠
    // console.log(reg.test('a'));//true

    // var reg = /^\d$/;
    // console.log(reg.test('d')); //false
    // console.log(reg.test('1')); //true


    //字符串中输出单双引号必须添加转义字符。
    // var reg = /^a"b'c$/;
    // console.log(reg.test('a\"b\'c')); //这里必须通过\进行转义，否则报错。

    // var reg = /^\.com$/; //这里必须添加转义字符，否则当做正则的(.)进行匹配
    // console.log(reg.test('.com')); //true


    //构造函数定义
    // var reg = new RegExp('\d'); //\d表示的是d字符，不是数字。
    // console.log(reg.test('12345')); //false
    // console.log(reg.test('12d345')); //true

    // var reg = new RegExp('\\d'); //表示的是数字
    // console.log(reg.test('12345')); //true
    // console.log(reg.test('abcde')); //false


    // var reg1 = /\d/;
    // console.log(reg1.test('12345')); //true
</script>